package cn.edu.sdjzu.xg.eagle.xg23_kcsj_01.mapper;

import cn.edu.sdjzu.xg.eagle.xg23_kcsj_01.entity.Monograph;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 专著Mapper接口
 */
@Component
public interface MonographMapper {
    /**
     * 根据条件查询专著列表
     * @param params 查询条件
     * @return 专著列表
     */
    List<Monograph> list(Map<String, Object> params);

    /**
     * 根据ID查询专著
     * @param id 专著ID
     * @return 专著信息
     */
    Monograph getById(Integer id);

    /**
     * 新增专著
     * @param monograph 专著信息
     * @return 影响行数
     */
    int insert(Monograph monograph);

    /**
     * 更新专著
     * @param monograph 专著信息
     * @return 影响行数
     */
    int update(Monograph monograph);

    /**
     * 删除专著
     * @param id 专著ID
     * @return 影响行数
     */
    int delete(Integer id);

    /**
     * 批量更新状态
     * @param params 参数，包含ids和status
     * @return 影响行数
     */
    int batchUpdateStatus(Map<String, Object> params);

    /**
     * 添加专著作者关联
     * @param monographId 专著ID
     * @param employeeId 教师ID
     * @param position 位次
     * @return 影响行数
     */
    int insertMonographEmployee(Integer monographId, Integer employeeId, Integer position);

    /**
     * 删除专著作者关联
     * @param monographId 专著ID
     * @return 影响行数
     */
    int deleteMonographEmployee(Integer monographId);

    /**
     * 查询专著作者
     * @param monographId 专著ID
     * @return 作者列表
     */
    List<Map<String, Object>> listMonographEmployees(Integer monographId);


    void insertMonographEmployee(Integer id, Integer integer, int i);


}
